package com.wei.czz.framework.admin.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wei.czz.framework.admin.entity.RoleEntity;
import com.wei.czz.framework.admin.entity.RoleMenuEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2021-03-15 10:30:05
 * className: RoleMenuDao 角色和菜单关联操作请求数据库交互接口
 * version: 1.0
 * description:
 */
public interface RoleMenuDao extends BaseMapper<RoleMenuEntity> {

    /**
     * 查询菜单主键列表
     * 根据角色主键查询角色对应的所有菜单主键
     * @param roleId     角色主键
     * @param deleteStatus 删除状态
     */
    List<String> getMenuListByRoleId(@Param("roleId") Long roleId, @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询菜单主键列表
     * 根据角色主键查询角色对应的所有菜单主键
     * @param roleId     角色主键
     * @param deleteFlag 删除状态
     */
    List<Long> findMenuListByRoleId(@Param("roleId") Long roleId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 查询角色主键数据
     * 根据菜单主键，查询菜单关联的角色主键
     * @param menuId 菜单主键
     * @param deleteFlag 删除状态
     * @return 角色主键数据
     */
    List<Long> findRoleIdList(@Param("menuId") Long menuId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 查询角色数据
     * 根据菜单主键，查询菜单关联的角色数据
     * @param menuId     菜单主键
     * @param deleteFlag 删除状态
     * @return 角色数据
     */
    List<RoleEntity> getRoleList(@Param("menuId") Long menuId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 查询菜单关联的角色主键集合
     * @param menuId     菜单主键
     * @param deleteFlag 删除状态
     * @return 角色主键集合
     */
    Set<String> getRoleIdSet(@Param("menuId") Long menuId, @Param("deleteFlag") Integer deleteFlag);

}
